import javax.swing.*;
import javax.swing.table.DefaultTableModel;


import java.awt.*;
import java.awt.event.*;
import java.rmi.RMISecurityManager;
import java.util.List;


public class Ventana extends JFrame {
	
	private static final long serialVersionUID = 1L;

	Controlador controlador;
	
	JMenuBar mnBar;
	JMenu mnArchivo;
	JMenuItem mnConectar, mnObtener, mnCerrar;
	JTable tabla;

    public Ventana(Controlador c) {
    	controlador = c;
     	setTitle("Cliente RMI");
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		configurarMenu();
		configurar();
    }
    
	private void configurarMenu() {
		
		mnBar = new JMenuBar();
		setJMenuBar(mnBar);

		mnArchivo = new JMenu("Archivo");
		mnBar.add(mnArchivo);

		mnConectar = new JMenuItem("Conectar");
		mnConectar.addActionListener(new ConectarEvent());
		
		mnArchivo.add(mnConectar);
		
		mnObtener = new JMenuItem("Obtener");
		mnObtener.addActionListener(new ObtenerEvent());

		mnObtener.setEnabled(false);
		mnArchivo.add(mnObtener);		
		
		mnCerrar = new JMenuItem("Cerrar");
		mnCerrar.addActionListener(new CerrarEvent());

		mnArchivo.add(new JSeparator());
		mnArchivo.add(mnCerrar);		
	}    
	
    private void configurar() {
    	Container c = getContentPane();
    
      	tabla = new JTable();
     	JScrollPane jsp = new JScrollPane(tabla);
    	c.add(jsp, BorderLayout.CENTER);
    	
    	JPanel pnlSur = new JPanel();
    	pnlSur.setLayout(new GridLayout(1,1));
    	pnlSur.setBorder(BorderFactory.createEtchedBorder());
    	c.add(pnlSur, BorderLayout.SOUTH);  
    	tabla.setSelectionMode(0);
        
        setLocation(420,100);
        pack();
    }

    public void cargarTabla(List<Empleado> empleados) {
    	Object[] columnas = { "ID", "Nombre", "E-mail" };
    	Object[][] datos = new Object[empleados.size()][3];
    	for (int i = 0; i < empleados.size(); i++) {
    		 datos[i][0] = empleados.get(i).getId();
    		 datos[i][1] = empleados.get(i).getNombre();
    		 datos[i][2] = empleados.get(i).getMail();
    	}
    	this.tabla.setModel(new DefaultTableModel(datos, columnas));
    }
    
    public static void main(String args[]) {
         javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
            	//System.setProperty("java.security.policy", "rmi.policy");
      		  	//System.setSecurityManager( new RMISecurityManager() );
            	RMI rmi = new RMI();
            	Controlador c = new Controlador(rmi);
            	Ventana v = new Ventana(c);
            	v.setVisible(true);
            	rmi.setV(v);            	
            }
        });
    }
   
    class ConectarEvent implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			mnConectar.setEnabled(false);
			mnObtener.setEnabled(true);
			controlador.conectarEvent();
		}
    }
    
    class ObtenerEvent implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			controlador.obtenerEvent();
		}
    }
    
    class CerrarEvent implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			controlador.cerrarEvent();
		}
    }
}
